home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.13 / pcq-programme / vsb1.0 / vsb1.0.p < prev    next >
Text File  |  1995-04-22  |  6KB  |  230 lines

  1. program Verstärker;
  2.  
  3. { VSB1.0 --> Tool zur Berechnung einfacher Verstärkerstufen
  4.   Freeware - (C) 1/1993 by J.Stötzer
  5.   Meine Adresse: J. Stötzer
  6.                  An der Hasel 195
  7.                  O-6000 Suhl 1
  8.                  (ab 1.7.1993: 98527 Suhl)                               }
  9.  
  10. {------------------------------------------------------------------------}
  11.  
  12. const Esc = chr($9b);
  13.  
  14. var r1,r2,rc,re,rg,rcs,rs,r10,rbe,rce,ra,rb,rein : real;
  15.     uc,ue,uoc,ube,dube,b,v,n,ic                  : real;
  16.     xx                                           : cardinal;
  17.     sel,sel2                                     : char;
  18.     Win,Con                                      : ptr;
  19.     Titel                                        : str;
  20.  
  21. {------------------------------------------------------------------------}
  22.  
  23.   procedure About;
  24.  
  25.   begin
  26.     clrscr;
  27.     writeln;
  28.     writeln(Esc,4,";",32,"m","Prog zur Berechnung einfacher Verstärkerstufen");
  29.     writeln;
  30.     writeln(Esc,0,";",3,";",33,"m"," ",chr(169)," 1/1993  by J. Stötzer");
  31.     writeln(Esc,0,"m");
  32.     writeln("Dieses Teil ist Freeware, solange nichts verändert wird.");
  33.     writeln;
  34.     writeln("Nähere Infos bzgl. Schaltungen usw. stehen in der Anleitung.");
  35.     writeln;
  36.     writeln;
  37.     writeln("Meine Adresse (Für Verbesserungsvorschläge, Laberei...) :");
  38.     writeln;
  39.     writeln(Esc,32,"m",Esc,20,"C","J. Stötzer");
  40.     writeln(Esc,20,"C","An der Hasel 195");
  41.     writeln(Esc,20,"C","O-6000 Suhl 1");
  42.     writeln(Esc,20,"C","(Ab 1.7.93.: 98527 Suhl )");
  43.     writeln;
  44.     writeln(Esc,0,"m",Esc,35,"C","Have Fun - Janosh");
  45.     writeln;
  46.     delay(8*50);
  47.   end;
  48.  
  49. {------------------------------------------------------------------------}
  50.  
  51.   procedure EF;
  52.  
  53.   begin
  54.     rein:=1/(1/(b*re+rbe)+1/r1+1/r2);
  55.     v:=1/(rbe/b/re+1);
  56.     ra:=1/(1/((rbe+rg)/b)+1/re);
  57.     writeln;
  58.     writeln(Esc,3,"m","Emitterfolger",Esc,0,"m");
  59.     writeln;
  60.   end;
  61.  
  62. {------------------------------------------------------------------------}
  63.  
  64.   procedure ST;
  65.  
  66.   begin
  67.     v:=1/(-1/(1/(1/rc+1/rce)*b/rbe)-re/rc);
  68.     rein:=1/(1/(b*re+rbe)+1/r1+1/r2);
  69.     ra:=1/(1/((1/(rbe+re+rg)*b*re+1)*rce)+1/rc);
  70.     writeln;
  71.     writeln(Esc,3,"m","Emitterschaltung mit Stromgegenkopplung",Esc,0,"m");
  72.     writeln;
  73.   end;
  74.  
  75. {------------------------------------------------------------------------}
  76.  
  77.   procedure SP;
  78.  
  79.   var v0 : real;
  80.  
  81.   begin
  82.     write("Rb  = ");
  83.     readln(rb);
  84.     v0:=-1/(1/rc+1/rce+1/r1)*b/rbe;
  85.     v:=1/(1/v0-rb/r1);
  86.     rein:=1/((1-v0)/r1+1/rbe)+rb;
  87.     ra:=1/(1/r1+1/(r1*rbe/(rb+rg)+rbe+r1)+1/rc+1/rce)/b;
  88.     writeln;
  89.     writeln(Esc,3,"m","Emitterschaltung mit Spannungsgegenkopplung",Esc,0,"m");
  90.     writeln;
  91.   end;
  92.  
  93. {------------------------------------------------------------------------}
  94.  
  95.   procedure Calc;
  96.  
  97.   begin
  98.     repeat
  99.       clrscr;
  100.       writeln(Esc,1,";",4,";",32,"m");
  101.       writeln("Berechnung einfacher Verstärkerstufen ",chr(169)," 1/1993 J.Stötzer");
  102.       writeln(Esc,0,"m");
  103.       writeln("   1 - Emitterschaltung mit Stromgegenkopplung");
  104.       writeln("   2 - Emitterschaltung mit Spannungsgegenkopplung");
  105.       writeln("   3 - Emitterfolger");
  106.       writeln;
  107.       writeln("   4 - Ein paar Infos");
  108.       writeln("   5 - Dieses Menu");
  109.       writeln;
  110.       writeln("   6 - Ende");
  111.       writeln;
  112.       repeat
  113.         write(Esc,3,"m","Bitte wählen: ",Esc,0,"m");
  114.         readln(sel);
  115.       until sel in ["1".."6"];
  116.       if sel<"4" then begin
  117.         clrscr;
  118.         writeln("Eingabe der Beschaltung");
  119.         writeln;
  120.         write("R1  = ");
  121.         readln(r1);
  122.         if sel="2" then
  123.           r2:=100e+6
  124.         else begin
  125.           write("R2  = ");
  126.           readln(r2);
  127.         end;
  128.         write("Rc  = ");
  129.         readln(rc);
  130.         if sel="2" then
  131.           re:=1
  132.         else begin
  133.           write("Re  = ");
  134.           readln(re);
  135.         end;
  136.         write("Rg  = ");
  137.         readln(rg);
  138.         write("b   = ");
  139.         readln(b);
  140.         write("Uoc = ");
  141.         readln(uoc);
  142.         if sel="2" then
  143.           xx:=1
  144.         else
  145.           xx:=0;
  146.         ube:=0;
  147.         dube:=2;
  148.         rcs:=rc*xx;
  149.         rs:=r2/(r1+r2);
  150.         r10:=-8.699988e-15*(rs*(r1/b+rcs)+re);
  151.         repeat
  152.           dube:=dube/2;
  153.           n:=(exp(ube/26.00001e-3)*r10)+uoc*rs-ube;
  154.           if n>=0 then
  155.             ube:=ube+dube
  156.           else
  157.             ube:=ube-dube;
  158.         until dube<1e-4;
  159.         ic:=8.699978e-15*exp(ube/26.00001e-3);
  160.         rbe:=b/ic*26.00002e-3;
  161.         rce:=rbe*200e+3/b/b;
  162.         ue:=re*ic;
  163.         uc:=uoc-ic*rc;
  164.         case sel of
  165.           "1" : ST;
  166.           "2" : SP;
  167.           "3" : EF;
  168.         end;
  169.         if uc-r10>=0 then begin
  170.           writeln("Ic   = ",ic:15," A");
  171.           writeln("Uc   = ",uc:15," V");
  172.           writeln("Ue   = ",ue:15," V");
  173.           writeln("V    = ",v:15);
  174.           writeln("Rein = ",rein:15," Ohm");
  175.           writeln("Ra   = ",ra:15," Ohm");
  176.         end else
  177.           writeln("Ue > Uc , Neudimensionierung nötig !!!");
  178.         writeln;
  179.         write(" ---> ENTER");
  180.         readln(sel2);
  181.       end else
  182.         if sel="4" then
  183.           About;
  184.     until sel="6"
  185.   end;
  186.  
  187. {------------------------------------------------------------------------}
  188.  
  189.   procedure DoIt;
  190.  
  191.   begin
  192.     Titel:="Verstärkerberechnung (C) by J. Stötzer";
  193.     Win:=Open_Window(0,0,564,180,1,0,$1007,Titel,Nil,100,50,640,256);
  194.     if Win=Nil then begin
  195.       writeln("Window nicht zu öffnen");
  196.       halt(15);
  197.     end;
  198.     Con:=OpenConsole(Win);
  199.     if Con=Nil then begin
  200.       writeln("Console nicht zu öffnen");
  201.       Close_Window(Win);
  202.       halt(15);
  203.     end;
  204.     SetStdIO(Con);
  205.     Calc;
  206.     SetStdIO(Nil);
  207.     CloseConsole(Con);
  208.     Close_Window(Win);
  209.   end;
  210.  
  211. {------------------------------------------------------------------------}
  212. {         Na, schon mal so'n langes Hauptprogramm gesehen ???            }
  213. {------------------------------------------------------------------------}
  214.  
  215. begin
  216.   DoIt;
  217. end.
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.